#ifndef HASTE_COMMON
#define HASTE_COMMON

//==================================================
// Haste Shader
// Shared Lighting & Rendering Constants
//==================================================

//-------------------------
// Bloom
//-------------------------
#define BLOOM_STRENGTH 0.75

//-------------------------
// Atmosphere
//-------------------------
#define HAZE_STRENGTH 0.18

//-------------------------
// Lighting
//-------------------------
#define SUN_WARMTH     0.03
#define SHADE_COOLNESS 0.02

// Ambient light floor
#define AMBIENT_MIN 0.06

//-------------------------
// Colour
//-------------------------
#define SATURATION 1.03
#define CONTRAST   1.04
#define GAMMA      1.00

//--------------------------------------------------
// Shared Functions
//--------------------------------------------------

float luminance(vec3 color)
{
    return dot(color, vec3(0.299, 0.587, 0.114));
}

vec3 applyAmbient(vec3 light)
{
    return max(light, vec3(AMBIENT_MIN));
}

vec3 applySunTint(vec3 color, float skyLight)
{
    vec3 warmSun  = vec3(1.04, 1.01, 0.97);
    vec3 coolShade = vec3(0.98, 1.00, 1.03);

    return color * mix(coolShade, warmSun, clamp(skyLight, 0.0, 1.0));
}

#endif